Modeling languages may be used to describe processes, such as business processes, for the purpose of coordinating and facilitating their execution. For example, process modeling languages allow an enterprise to describe tasks of a process, and to automate performance of those tasks in a desired order to achieve a desired result. For instance, the enterprise may implement a number of business software applications, and process modeling may allow coordination of functionalities of these applications, including communications (e.g., messages) between the applications, to achieve a desired result. Further, such process modeling generally relies on language that is common to, and/or interoperable with, many types of software applications and/or development platforms. As a result, process modeling may be used to provide integration of business applications both within and across enterprise organizations.
For example, one application of process modeling includes automated business-to-business (B2B) applications that rely on communications between actors using message exchanges. If the involved actors are instances of business process models executed by multiple business process execution engines, the proper functioning of the automated B2B applications may rely on the premise that messages sent by another party arrive at the correct process instance executed by the process execution engine. It may often be the case that multiple process instances of the same business process model are being executed concurrently, and that messages flowing to and from these process instances arrive and depart through shared messaging channels. Thus, when a message arrives to a channel that is shared by multiple, concurrently running business process instances, the successful performance of the B2B application may depend on determining which instance or instances to route the incoming message.